// 计算图片的缩放大小
export const resizeImageDimensions = (originalWidth: number, originalHeight: number, max = 180, min = 30) => {
    // 检查原始宽高是否满足约束
    if (originalWidth <= max && originalWidth >= min && originalHeight <= max && originalHeight >= min) {
        return { width: originalWidth, height: originalHeight }; // 无需缩放
    }

    // 计算缩放比例（针对最大的）
    const widthRatioMax = max / originalWidth;
    const heightRatioMax = max / originalHeight;
    const scaleMax = Math.min(widthRatioMax, heightRatioMax);

    // 计算缩放比例（针对最小的）
    const widthRatioMin = min / originalWidth;
    const heightRatioMin = min / originalHeight;
    const scaleMin = Math.max(widthRatioMin, heightRatioMin);

    // 确定最终缩放比例：优先满足最小约束，再判断是否需要限制到最大值
    const finalScale = Math.min(scaleMax, Math.max(scaleMin, 1.0));

    // 计算最终的宽度和高度
    const newWidth = Math.round(originalWidth * finalScale);
    const newHeight = Math.round(originalHeight * finalScale);

    return { width: newWidth, height: newHeight };
}

// 获取光标位置并插入图片
export const insertImageAtCursor = (imageUrl: string, width: number, height: number) => {
    const selection:any = window.getSelection();
    const range = selection.getRangeAt(0);
    // 创建一个图片元素
    const img = document.createElement('img');
    img.src = imageUrl;
    img.style.width = `${Math.round(width)}px`;  // 图片宽度
    img.style.height = `${Math.round(height)}px`;  // 图片高度
    img.style.display = 'block';  // 图片块级显示
    // 删除光标位置的内容
    range.deleteContents();
    // 将图片插入到光标位置
    range.insertNode(img);
    // 移动光标到图片后面
    range.setStartAfter(img);
    range.setEndAfter(img);
    selection.removeAllRanges();
    selection.addRange(range);
}
